Methods and systems for interconnecting a peripheral device and an electronic system

ABSTRACT

A computer-implemented method for interconnecting a peripheral device and an electronic system includes analyzing an information (INF) file associated with the peripheral device, recognizing a resource conflict between the peripheral device and the electronic system based on the analyzing of the INF file, and resolving the resource conflict by modifying the INF file.

RELATED APPLICATION

This application claims priority to U.S. Provisional Application No.61/200,691, filed on Dec. 2, 2008, which is hereby incorporated byreference in its entirety.

BACKGROUND

A computer system may include input/output accesses for accessinginput/output peripheral devices, such as Compact Flash devices andPersonal Computer (PC) Card devices. Some devices and correspondingsoftware components (e.g., corresponding device controllers) that usethe input/output accesses rely on availability of addresses ofinput/output access for operation. The addresses for some legacyperipheral devices, e.g., those complying with the Personal ComputerMemory Card International Association (PCMCIA) standard, may be underthe address of 0x1000 (a hexadecimal representation of the input/outputaddress).

However, with the advent of Peripheral Component Interconnect (PCI)Express host bus interface technology, input/output accesses under theaddress of 0x1000 may not be available to device controllers associatedwith the legacy peripheral devices. In this case, conventional devicecontrollers cannot adapt the legacy peripheral devices to moderncomputers that comply with the PCI Express standard.

SUMMARY

In one embodiment, a computer-implemented method for interconnecting aperipheral device and an electronic system includes analyzing aninformation (INF) file associated with the peripheral device,recognizing a resource conflict between the peripheral device and theelectronic system based on the analyzing of the INF file, and resolvingthe resource conflict by modifying the INF file.

BRIEF DESCRIPTION OF THE DRAWINGS

Features and advantages of embodiments of the claimed subject matterwill become apparent as the following detailed description proceeds, andupon reference to the drawings, wherein like numerals depict like parts,and in which:

FIG. 1 illustrates a block diagram of an example of an electronic systemaccording to one embodiment of the present invention.

FIG. 2 illustrates an example of a software topology diagram for theelectronic system, in accordance with one embodiment of the presentinvention.

FIG. 3 illustrates a flowchart of examples of operations performed byenhancement software, in accordance with one embodiment of the presentinvention.

FIG. 4 illustrates a flowchart of examples of operations performed bythe electronic system, in accordance with one embodiment of the presentinvention.

FIG. 5 illustrates a flowchart of examples of operations performed bythe electronic system, in accordance with one embodiment of the presentinvention.

DETAILED DESCRIPTION

Reference will now be made in detail to the embodiments of the presentinvention. While the invention will be described in conjunction withthese embodiments, it will be understood that they are not intended tolimit the invention to these embodiments. On the contrary, the inventionis intended to cover alternatives, modifications and equivalents, whichmay be included within the spirit and scope of the invention as definedby the appended claims.

Embodiments described herein may be discussed in the general context ofcomputer-executable instructions residing on some form ofcomputer-usable medium, such as program modules, executed by one or morecomputers or other devices. Generally, program modules include routines,programs, objects, components, data structures, etc., that performparticular tasks or implement particular abstract data types. Thefunctionality of the program modules may be combined or distributed asdesired in various embodiments. Some portions of the detaileddescriptions which follow are presented in terms of procedures, logicblocks, processing and other symbolic representations of operations ondata bits within a computer memory. These descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. In the present application, a procedure,logic block, process, or the like, is conceived to be a self-consistentsequence of steps or instructions leading to a desired result. The stepsare those requiring physical manipulations of physical quantities.Usually, although not necessarily, these quantities take the form ofelectrical or magnetic signals capable of being stored, transferred,combined, compared, and otherwise manipulated in a computer system.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the followingdiscussions, it is appreciated that throughout the present application,discussions utilizing the terms such as “running,” “analyzing,”“recognizing,” “resolving,” “modifying,” “defining,” “assigning,”“updating,” “re-enabling,” “establishing” or the like, refer to theactions and processes of a computer system, or similar electroniccomputing device, that manipulates and transforms data represented asphysical (electronic) quantities within the computer system's registersand memories into other data similarly represented as physicalquantities within the computer system memories or registers or othersuch information storage, transmission or display devices.

By way of example, and not limitation, computer-usable media maycomprise computer storage media and communication media. Computerstorage media includes volatile and nonvolatile, removable andnon-removable media implemented in any method or technology for storageof information such as computer-readable instructions, data structures,program modules or other data. Computer storage media includes, but isnot limited to, random access memory (RAM), read only memory (ROM),electrically erasable programmable ROM (EEPROM), flash memory or othermemory technology, compact disk ROM (CD-ROM), digital versatile disks(DVDs) or other optical storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othermedium that can be used to store the desired information.

Communication media can embody computer-readable instructions, datastructures, program modules or other data in a modulated data signalsuch as a carrier wave or other transport mechanism and includes anyinformation delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media includes wired media such as awired network or direct-wired connection, and wireless media such asacoustic, radio frequency (RF), infrared and other wireless media.Combinations of any of the above should also be included within thescope of computer-readable media.

Furthermore, in the following detailed description of the presentinvention, numerous specific details are set forth in order to provide athorough understanding of the present invention. However, it will berecognized by one of ordinary skill in the art that the presentinvention may be practiced without these specific details. In otherinstances, well known methods, procedures, components, and circuits havenot been described in detail as not to unnecessarily obscure aspects ofthe present invention.

In one embodiment, the present invention provides an electronic system,e.g., a computer system, with an inserted peripheral device. Thecomputer system can be a modern computer, e.g., complying with thePeripheral Component Interconnect (PCI) Express standard. The insertedperipheral device can be a modern peripheral device, e.g., complyingwith the PCI Express standard, or a legacy peripheral device, e.g.,complying with Personal Computer Memory Card International Association(PCMCIA) standard. If the inserted peripheral device is a modernperipheral device, the computer system can communicate with the modernperipheral device properly. If the inserted peripheral device is alegacy peripheral device, the computer system can run enhancementsoftware to resolve a resource conflict that may exist between thelegacy peripheral device and the computer system. As such, the computersystem can also properly communicate with the legacy peripheral device.

FIG. 1 illustrates a block diagram of an example of an electronic system100, in accordance with one embodiment of the present invention. Theelectronic system 100 can be, but is not limited to, a computer system.The computer system 100 can be a personal computer (PC) system, such asa desktop computer, a laptop computer, a desktop workstation, or aserver computer, that has a PCI Express bus. In one such embodiment, thecomputer system 100 includes a central processing unit (CPU) 103, a harddisk drive (HDD) 101, a system memory 104, a system core logic chipset109 (hereinafter, system core logic 109), a peripheral controller 105, aconnector, e.g., a socket connector 107, a port, a cable (not shown inFIG. 1), etc., an audio output device 112, and a universal serial bus(USB) port 113. A peripheral device 108 can be coupled to the computersystem 100 via the connector, e.g. the socket connector 107. Theperipheral device 108 can be a USB device, a local area network (LAN)device, a Compact Flash device, a PC card device, etc.

The CPU 103 can be cooperated with a basic input/output system (BIOS)and an operating system (OS) to manage devices in the computer system100 by executing instructions and processing the data contained incomputer programs. The operating system can be stored in the hard diskdrive 101. The hard disk drive 101 can be coupled to other devices inthe computer system 100, e.g., via a Serial Advanced TechnologyAttachment (SATA) electrical interface 102.

The system core logic 109 includes one or more components that processinput/output data exchange and memory access exchange between systemcomponents in the computer system 100. The system core logic 109 canalso include an integrated graphics controller 110 for generating andtransmitting a video output 111, such as a Digital Visual Interface(DVI) video output.

The socket connector 107 is operable for connecting various peripheraldevices 108 to the computer system 100. The socket connector 107 canreceive electrical signals generated by the peripheral controller 105.The peripheral controller 105 is coupled to the system core logic 109and can communicate with the system core logic 109 via a host businterface 106. In one embodiment, the peripheral device 108 complieswith a first protocol standard, e.g., the PCMCIA standard, PC Cardstandard, or Compact Flash standard. The peripheral controller 105 canrecognize various peripheral devices, e.g., PC Card devices and/orCompact Flash devices complying with the PCMCIA standard, or PCI Expressdevices complying with the PCI Express standard. However, the host businterface 106 complies with a second protocol standard, e.g., the PCIExpress standard, that is different from the first protocol standard,e.g., the PCMCIA standard.

Advantageously, the peripheral controller 105 can use enhancementsoftware to adapt the peripheral device 108 that complies with the firstprotocol standard, e.g., the PCMCIA standard, to the host bus interface106 that complies with the second, different protocol standard, e.g. thePCI Express standard. More specifically, the enhancement software can benotified that the peripheral device 108 has been attached and canautomatically update information files (INF files) associated with asoftware device driver for the peripheral device 108. Thus, the computersystem 100 can accommodate re-assignment of the input/output resourcesfor the peripheral device 108 so as to match the resource availabilityof the computer system 100. The enhancement software can be stored inhard disk drive 101, in one embodiment.

FIG. 2 illustrates an example of a software topology diagram for thecomputer system 100, in accordance with one embodiment of the presentinvention. FIG. 2 is described in combination with FIG. 1. As shown inFIG. 2, the software topology diagram includes an information (INF) file201, enhancement software 200, connectivity service software 207 (e.g.,including one or more operating system connectivity service functions),bus control software 208 (e.g., including one or more bus controlfunctions), a software device driver 205 (e.g., a card driver), a hostbus interface driver 206, an application program 202 (hereinafter,application 202), an application programming interface (API) 203, andother operating system software 204 (e.g., including other operatingsystem functions).

The CPU 103 in the computer system 100 can execute the machineinstructions (or software instructions) in the enhancement software 200.In one embodiment, software instructions 200 are stored in the hard diskdrive 101. In addition, the software instructions 200 are copied to thesystem memory 104 during a normal operation, and are identified by fileextensions such as “.SYS” and “.EXE”.

The enhancement software 200 can communicate with the connectivityservice software (or functions) 207 to receive a notification, such as anotification indicating that the peripheral device 108 has been insertedor removed. When the peripheral device 108 is inserted into the computersystem 100, the enhancement software 200 communicates with the buscontrol software 208 via the connectivity service software 207, so as tohandle lower level commands for interconnecting the peripheral device108 and the computer system 100. The lower level commands are handled bymeans of controlling electrical signals and performing software tasks,such as assigning system resources. By communicating with the buscontrol software 208, the enhancement software 200 can integrate asoftware device driver 205, e.g., a card driver associated with theperipheral device 108, into a data flow that the application 202requires from the INF file 201. As such, the bus control software 208can be used by the peripheral controller 105 to adapt the peripheraldevice 108, e.g., a device complying with the PCMCIA standard, to thecomputer system 100, which complies with, e.g., the PCI Expressstandard. For example, the bus control software 208 can be used as a PCCard bus control software for adapting a PC Card device to the computersystem 100. The bus control software 208 can also be used as CompactFlash bus control software for adapting a Compact Flash device to thecomputer system 100.

The INF file 201 includes information for the card driver 205 associatedwith the peripheral device 108. In addition, the INF file 201 caninclude information for the computer system 100 to activate otheroperating system software (or functions) 204, such as functions forprinters and/or speakers. The enhancement software 200 can manually orautomatically manipulate the INF file 201 or files corresponding to theperipheral device 108. The INF file 201 can be used by the card driver205 to communicate configuration data and information data. The carddriver 205 can perform accesses, such as memory accesses and/orinput/output accesses, to the peripheral device 108 by means of the hostbus interface driver 206, or by a transparent method of directaddressing. In one embodiment, the system core logic 109 executehardware functions of creating PCI Express packets to perform theaccesses, such as the memory accesses and/or the input/output accesses,to the peripheral controller 105. In one such embodiment, the carddriver 205 does not communicate with the host bus interface driver 206directly. For example, the card driver 205 can communicate with the hostbus interface driver 206 via a PCI Express bus controller (not shown inFIG. 2).

The application 202, e.g., a card software application, can call the API203, such that the API 203 requires the resources provided by theperipheral device 108. For example, the API 203 is a networking API thatachieves access to a small network such as a BLUETOOTH personal areanetwork (PAN) through connections (or connectivity) provided by acontroller that can reside on the peripheral device 108 and complieswith the first protocol standard, e.g., the PCMCIA standard. The cardsoftware application 202 can include a PAN application that runs as acontact organizer application. For example, the card softwareapplication 202 collects and manages information, e.g., businessinformation and/or personal contact information, in the PAN. Suchinformation, e.g., the business information and/or the personal contactinformation, in the PAN is defined or written in a predetermined datastructure. The card software application 202 can also include Internetaccess software applications, such as a Web browser, to provide Internetaccess for the peripheral device 108. For example, the card softwareapplication 202 is used as an interface to the networking API 203 andother operation system functions 204, e.g., functions for audio/videocoders, functions for audio/video de-coders, cryptographic functions,etc. In addition, the peripheral device 108 supports a wireless modemfunction to be connected to, e.g., a local voice/data carrier equipment.By means of a data path, e.g., an access path provided by the carddriver 205, Internet access can be provided for the peripheral device108.

Referring to FIG. 3, a flowchart of examples of operations performed bythe enhancement software 200 is illustrated, in accordance with oneembodiment of the present invention. The method shown in FIG. 3 isdescribed in combination with the computer system 100 shown in FIG. 1and the enhancement software 200 shown in FIG. 2. In one embodiment, theflowchart is implemented as computer-executable instructions stored in acomputer-readable medium.

At step 300, the enhancement software 200 begins executing enhancementsoftware instructions. For example, after the computer system 100 isturned on and the operating system is loaded, the computer system 100starts to run the enhancement software 200. The enhancement software 200begins execution of machine instructions. The enhancement software 200can automatically run in a background mode, which is not presented tousers.

At step 301, the enhancement software 200 communicates with theconnectivity service function 207, e.g., requests processing for theconnectivity service function 207, to register for notifications basedon event status (or conditions) of one or more peripheral devices 108.The notifications, also called event notifications, indicate whetherspecific events occur. The specific events can include various eventssuch as system events, device change events, etc. The system events caninclude a power-on event, a shut down event, a standby event, etc. Thedevice change events can include a change in status of the devices inthe computer system 100, e.g., a device insertion event, a deviceremoval event, a device loading event, a device unloading event, achange in the number of peripheral devices, etc. For example, a CompactFlash device loading event notification and/or a PC Card device loadingevent notification can be registered at step 301. Once such a device isinserted or removed, the operating system can send a notification to theenhancement software 200. At step 301, after the notificationregistration, the enhancement software 200 scans all devices, e.g.,including peripheral devices and internal devices, in the computersystem 100 to establish a device list.

At step 302, the enhancement software 200 waits for a notification. Thenotification can be accomplished by an interrupt or a software callbackfunction, for example. When a notification is received, the enhancementsoftware 200 performs step 303 to determine whether the event is adevice change event. If the notification does not indicate that a devicechange event has occurred, the enhancement software 200 performs step302, waiting for a next notification. If the notification indicates thata device change event has occurred, the enhancement software 200performs step 304 to scan all of the devices in the computer system 100and updates the device list.

At step 305, the enhancement software 200 checks if the device changeevent is that a new peripheral device 108 is inserted. Upon a falsenotification of a device insertion event, the enhancement software 200performs step 302, waiting for a next notification. Otherwise, theenhancement software 200 performs step 306 to obtain correspondingdevice information for the inserted peripheral device 108, such as adevice name, a global unique identifier (GUID), an InstallID, a deviceIndex, etc.

At step 307, the enhancement software 200 identifies the type of theperipheral device 108. For example, the enhancement software 200 checksif the peripheral device 108 is a PCMCIA device, e.g., a PC Card device,a Compact Flash device, etc. If the peripheral device 108 is not aPCMCIA device, the enhancement software 200 performs step 302, waitingfor a next notification. Otherwise, the enhancement software 200 updatesthe INF file 201 associated with the peripheral software drivers.

More specifically, the enhancement software 200 performs step 308. Atstep 308, the enhancement software 200 obtains/gets an INF file path(e.g., a path to the INF file 201) and a driver path (e.g., a path to adevice driver 205 associated with the peripheral device 108) accordingto the device information such as the GUID, the InstallID and the deviceindex obtained at step 306.

At step 309, the enhancement software 200 copies the device driver 205and the INF file 201 into a working directory, and analyzes the INF file201. The working directory can be integrated into the operating systemto enhance system security. Specifically, the enhancement software 200can get the device name of the peripheral device 108 and the driver nameof the device driver 205 associated with the peripheral device 108 fromthe INF file 201. If the operating system of the computer system 100 isa Microsoft® operating system, the enhancement software 200 obtains a“LogConfigOverride” section for the peripheral device 108 from the INFfile 201, and obtains the “Override” list from the “LogConfigOverride”section. The enhancement software 200 may also obtain associatedinformation from the bus control software 208. Based on an analysis ofthe INF file 210, e.g., based on the “LogConfigOverride” section, the“Override” list, and the associated information from the bus controlsoftware 208, the enhancement software 200 can recognize/determine thetype of conflict that may exist. For example, from the“LogConfigOverride” section in the INF file 201, the enhancementsoftware 200 can obtain content, e.g., an IOconfig command (or anIOconfig assignment), which defines a range of an assigned I/O addressfor the peripheral device 108. According to the content of the IOconfigcommand/assignment, the enhancement software 200 can determine whetherthere is a resource conflict, e.g., an input/output (I/O) addressingconflict, between the computer system 100 and the peripheral device 108.

At step 310, based on the analysis result obtained at step 309, theenhancement software 200 determines if a resource conflict, e.g., an I/Oaddressing conflict, occurs. For example, the enhancement software 200can determine if the conflict recognized at step 309 includes an I/Oaddressing conflict between the peripheral device 108 and the computersystem 100 due to limitations of I/O addresses in the computer system100 complying with the PCI Express standard. More specifically, the INFfile 201 may select a fixed I/O address, e.g., under 0x1000, for theperipheral device 108 by means of an “IOConfig” instruction for theMicrosoft® operating system. When the fixed I/O address is within acertain range, e.g., ranged from 0x0000 to 0x1000, the INF file 201 mayexhibit an I/O addressing conflict. If there is no resource conflict,the flowchart returns to step 302 and waits for the next notification.

Advantageously, if a resource conflict occurs, the enhancement software200 performs step 311 to update/modify the INF file 201 so as to resolvethe resource conflict. In one embodiment, by modifying the IOconfigcommand, the conflicts can be resolved. Specifically, the enhancementsoftware 200 modifies the IOconfig assignment based on a range ofavailable I/O addresses of the computer system 100. As such, accordingto the modified IOconfig assignment, the operating system assigns a newI/O address that exhibits no conflict with the resource of the computersystem 100 to the peripheral device 108. For example, available I/Oaddresses of the computer system 100 that operates under the Microsoft®operating system and that uses PCI Express host bus interfaces aregreater than 0x1000. When the I/O address (e.g., selected according toinformation in the INF file 201) for the peripheral device 108 is withina range that is below 0x1000, e.g., ranged from 0x0300 to 0x1000, theenhancement software 200 can change the I/O address to be within a rangethat is greater than 0x1000, e.g., ranged from 0x1000 to 0xFFFF. In oneembodiment, the enhancement software 200 changes the content of theoriginal IOconfig assignment. The operating system can assign the I/Oaddress to the peripheral device 108 according to the modified IOConfigassignment. As such, the conflict can be eliminated. In anotherembodiment, the enhancement software 200 can add a new IOconfigassignment to the INF file 210, such that the operating system assigns aproper I/O address to the peripheral device 108 based on the addedIOconfig assignment. Meanwhile, the original IOConfig assignment isremoved (e.g., by means of deletion), or labeled as a remark or acomment rather than an instruction (e.g., by adding appropriate syntaxin the INF file 201) so that it will be ignored during processing. Assuch, the resource conflict can also be eliminated.

Following the modification/update of the INF file 201 at step 311, theenhancement software 200 performs step 312. At step 312, the enhancementsoftware 200 launches a driver package installer (e.g., DPInst.exe) toupdate the device driver 205. For example, the enhancement software 200instructs the operating system to install, re-install, orremove-then-install the device driver 205. Thus, the computer system 100can communicate with the peripheral device 108 using the device driver205. Subsequently, the flowchart returns to the block 302 to wait for anext notification.

In one embodiment, users can follow an on-screen device driverinstallation wizard to update the device driver 205. In addition,following the update of the device driver 205, the enhancement software200 can disable the peripheral controller 105, followed by re-enablingthe peripheral controller 105, to establish a new logical connectionbetween the peripheral device 108 and the computer system 100.

FIG. 4 illustrates a flowchart of examples of operations performed bythe computer system 100, in accordance with one embodiment of thepresent invention. By performing the operations in the flowchart, thecomputer system 100 can recognize a media card. The method shown in FIG.4 is described in combination with the computer system 100 shown in FIG.1 and software, e.g., the enhancement software 200, the host businterface driver 206, the card driver 205, the application 202, etc.,shown in FIG. 2. In order to adapt the peripheral device 108, e.g., amedia card, the computer system 100 can first recognize the media card108 through a corresponding bus driver such as a SecureDigital/MultiMediaCard (SD/MMC) bus driver, when the media card 108 isinserted. As such, the enhancement software 200 and the method shown inFIG. 3 can be used to control the communication between the media card108 and the computer system 100 through the bus driver.

At step 404 of FIG. 4, the media card 108 is inserted into the mediasocket 107 of the computer system 100. At step 406, the hardware logic,e.g., the system core logic 109, powers the media socket 107.

At step 408, the hardware logic accesses the media card 108 to determinethe card type of the media card 108. According to the type of the mediacard 108, a corresponding bus driver, e.g., a standard SD/MMC bus driveror an extended SD/MMC bus driver, which can be used to support the mediacard 108 can be identified. The host bus interface driver 206 shown inFIG. 2 can be the standard SD/MMC bus driver for supporting the mediacard 108. If the standard SD/MMC bus driver 206 can support the mediacard 108, the card driver 205 performs accesses, such as memory accessesand/or input/output accesses, to the media card 108 by means of thestandard SD/MMC bus driver 206. If the standard SD/MMC bus driver 206cannot support the media card 108, the extended SD/MMC bus driver (notshown) can be applied. In this case, the card driver 205 can also accessthe media card 108 through the extended SD/MMC bus driver.

The standard and extended SD/MMC bus drivers both can be notified of theinsertion event when the media card 108 is inserted. In one embodiment,it is determined whether the media card 108 can be supported by thestandard SD/MMC bus driver 206 at step 410. If the type of the mediacard 108 can be supported by the standard SD/MMC bus driver 206, then atstep 412, the standard SD/MMC bus driver 206 is notified that the mediacard 108 is inserted. At step 414, applications of the computer system100, such as the application 202, can access the media card 108 throughthe standard SD/MMC bus driver 206. Otherwise, the flowchart goes tostep 418.

At step 418, the extended SD/MMC bus driver is notified of insertion ofthe media card 108. When the type of the media card 108 cannot besupported by the standard SD/MMC bus driver 206, the standard SD/MMC busdriver 206 halts access to the standard SD/MMC programming registers.Meanwhile, the extended SD/MMC bus driver is activated to access themedia card 108. At step 420, it is determined whether the media card 108can be supported by the extended SD/MMC bus driver. If the media card108 is not supported by the extended SD/MMC bus driver, the computersystem 100 may not operate the media card 108 until the media card 108is removed at step 416. Otherwise, the flowchart goes to 422. At step422, the extended SD/MMC bus driver can support the media card 108, andthe application 202 of the computer system 100 can access the media card108 through the extended SD/MMC bus driver.

FIG. 5 illustrates a flowchart of examples of operations performed bythe computer system 100, in accordance with one embodiment of thepresent invention. FIG. 5 is described in combination with FIG. 1, FIG.2, and FIG. 3.

In block 502, the central processing unit (CPU) 103 runs the enhancementsoftware 200. As such, the enhancement software 200 performs theoperations described in blocks 504, 506, and 508.

Specifically, in block 504, the enhancement software 200 analyzes theINF file 201 associated with the peripheral device 108.

In block 506, the enhancement software 200 recognizes/determines aresource conflict, e.g., an I/O addressing conflict, between theperipheral device 108 and an electronic system, e.g., the computersystem 100, based on the analyzing of the INF file 201.

In block 508, the enhancement software 200 resolves the resourceconflict by modifying the INF file 201.

In summary, embodiments according to the present invention provide acomputer system that can connect with a peripheral device. Theperipheral device complies with a first protocol standard, e.g., thePCMCIA standard. The computer system complies with a second protocolstandard, e.g., the PCI Express standard, that is different from thefirst protocol standard. The computer system can run enhancementsoftware to determine whether a resource conflict occurs by analyzing anINF file associated with the peripheral device. If a resource conflictoccurs, the enhancement software can modify the INF file based on arange of available addresses of the computer system, and update asoftware device driver associated the peripheral device based on themodification of the INF file. After that, the enhancement software canfurther re-enable a peripheral controller for adapting the peripheraldevice to the computer system. As a result, the computer system cancommunicate with the peripheral device properly. Advantageously, thecompatibility of the computer system with different protocols can beexpanded.

While the foregoing description and drawings represent embodiments ofthe present invention, it will be understood that various additions,modifications and substitutions may be made therein without departingfrom the spirit and scope of the principles of the present invention asdefined in the accompanying claims. One skilled in the art willappreciate that the invention may be used with many modifications ofform, structure, arrangement, proportions, materials, elements, andcomponents and otherwise, used in the practice of the invention, whichare particularly adapted to specific environments and operativerequirements without departing from the principles of the presentinvention. The presently disclosed embodiments are therefore to beconsidered in all respects as illustrative and not restrictive, thescope of the invention being indicated by the appended claims and theirlegal equivalents, and not limited to the foregoing description.

What is claimed is:
 1. A computer-implemented method for interconnectinga peripheral device and an electronic system, comprising: obtainingcontent from an information (INF) file associated with said peripheraldevice, wherein said content defines a range of an assigned input/outputaddress for said peripheral device, wherein if said peripheral devicecomplies with the Peripheral Component Interconnect (PCI) Expressstandard, then said assigned input/output address for said peripheraldevice is within a first range; recognizing a resource conflict betweensaid peripheral device and said electronic system by analyzing saidcontent in said INF file, wherein said resource conflict occurs if saidcontent indicates that said assigned input/output address for saidperipheral device is within a second range; resolving said resourceconflict by modifying said INF file to assign a new input/output addresswithin said first range to said peripheral device; and updating a devicedriver associated with said peripheral device.
 2. Thecomputer-implemented method as claimed in claim 1, wherein said resourceconflict comprises an input/output addressing conflict.
 3. Thecomputer-implemented method as claimed in claim 1, wherein saidelectronic system and said peripheral device comply with differentprotocol standards.
 4. The computer-implemented method as claimed inclaim 1, wherein said resolving said resource conflict comprises:modifying said content based on said first range, wherein said firstrange is a range of an available input/output address of said electronicsystem and said first range is different from said second range; andassigning said new input/output address to said peripheral deviceaccording to the modified content.
 5. The computer-implemented method asclaimed in claim 1, further comprising: disabling then re-enabling aperipheral controller after said updating of said device driver; andestablishing a logical connection between said peripheral device andsaid electronic system using the updated device driver.
 6. Thecomputer-implemented method as claimed in claim 1, further comprisingsaid electronic system identifying the type of said peripheral device.7. The computer-implemented method as claimed in claim 1, wherein ifsaid peripheral device complies with the Personal Computer Memory CardInternational Association (PCMCIA) standard, then said assignedinput/output address for said peripheral device is within said secondrange.
 8. The computer-implemented method as claimed in claim 1, whereinsaid INF file comprises information for said device driver.
 9. Acomputer-readable storage medium having computer-executable componentsstored thereon, for interconnecting a peripheral device and anelectronic system, said computer-executable components comprising: aninformation (INF) file associated with said peripheral device; softwarethat obtains content from said INF file, recognizes a resource conflictbetween said peripheral device and said electronic system by analyzingsaid content in said INF file, and resolves said resource conflict bymodifying said INF file to assign a new input/output address to saidperipheral device, wherein said content defines a range of an assignedinput/output address for said peripheral device, if said peripheraldevice complies with the Peripheral Component Interconnect (PCI) Expressstandard, then said assigned input/output address for said peripheraldevice is within a first range, wherein said resource conflict occurs ifsaid content indicates that said assigned input/output address for saidperipheral device is within a second range, and wherein said newinput/output address is within said first range; and a software devicedriver associated with said peripheral device, wherein said softwareupdates said software device driver following a modification of said INFfile.
 10. The computer-readable storage medium as claimed in claim 9,wherein said resource conflict comprise an input/output addressingconflict.
 11. The computer-readable storage medium as claimed in claim9, wherein said electronic system comprises a computer system.
 12. Thecomputer-readable storage medium as claimed in claim 9, wherein if saidperipheral device complies with the Personal Computer Memory CardInternational Association (PCMCIA) standard, then said assignedinput/output address for said peripheral device is within said secondrange.
 13. The computer-readable storage medium as claimed in claim 9,wherein said electronic system complies with the Peripheral ComponentInterconnect (PCI) Express standard.
 14. The computer-readable storagemedium as claimed in claim 9, wherein said INF file comprisesinformation for said software device driver.
 15. The computer-readablestorage medium as claimed in claim 9, wherein said software modifiessaid content based on said first range, wherein said first range is arange of an available input/output address of said electronic system andis different from said second range, and wherein said electronic systemassigns said new input/output address to said peripheral deviceaccording to the modified content.
 16. The computer-readable storagemedium as claimed in claim 9, wherein said electronic system disablesthen re-enables a peripheral controller after said update of saidsoftware device driver to establish a logical connection between saidperipheral device and said electronic system using the updated softwaredevice driver.
 17. An electronic system comprising: a processing unit;and memory coupled to said processing unit, said memory comprisingcomputer-readable instructions that, when executed by said processingunit, cause said electronic system to: obtain content from aninformation (INF) file associated with a peripheral device, wherein saidcontent defines a range of an assigned input/output address for saidperipheral device, wherein if said peripheral device complies with thePeripheral Component Interconnect (PCI) Express standard, then saidassigned input/output address for said peripheral device is within afirst range; recognize a resource conflict between said peripheraldevice and said electronic system by analyzing said content in said INFfile, wherein said resource conflict occurs if said content indicatesthat said assigned input/output address for said peripheral device iswithin a second range; resolve said resource conflict by modifying saidINF file to assign a new input/output address within said first range tosaid peripheral device; and update a software device driver associatedwith said peripheral device following a modification of said INF file.18. The electronic system as claimed in claim 17, wherein said resourceconflict comprises an input/output addressing conflict.
 19. Theelectronic system as claimed in claim 17, wherein said computer-readableinstructions, when executed by said processing unit, also cause saidelectronic system to modify said content based on a range of anavailable input/output address of said electronic system and to assignsaid new input/output address to said peripheral device according to themodified content, wherein said first range comprises said range of saidavailable input/output address.
 20. The electronic system as claimed inclaim 17, further comprising a peripheral controller coupled to saidperipheral device via a connector and coupled to a system core logic viaa host bus interface and said peripheral device comply with differentprotocol standards.
 21. The electronic system as claimed in claim 17,wherein said electronic system disables then re-enables a peripheralcontroller after said update of said software device driver to establisha logical connection between said peripheral device and said electronicsystem using the updated software device driver.
 22. The electronicsystem as claimed in claim 17, wherein if said peripheral devicecomplies with the Personal Computer Memory Card InternationalAssociation (PCMCIA) standard, then said assigned input/output addressfor said peripheral device is within said second range.
 23. Theelectronic system as claimed in claim 17, wherein said INF filecomprises information for said software device driver.